package com.springboot.demo.common.utils;

import java.text.NumberFormat;

/**
 * @ClassName:DistanceUtil.java
 * @Package com.utils
 * @Description:根据经纬度算两地之间的距离
 * @Author JuoChiu
 * @Date  2017年10月31日下午2:58:56
 * @Version
 */
@SuppressWarnings("all")
public class DistanceUtil {
	
	/**
	 * @MethodName:getLatLngDistance
	 * @Author JuoChiu
	 * @Date 2017年10月31日 下午3:00:45
	 * @Description:这里用一句话描述这个方法的作用
	 * @param longitude1
	 * @param latitude1
	 * @param longitude2
	 * @param latitude2
	 * @return
	 * @ReturnType String
	 */
	public static String getLatLngDistance(double longitude1,double latitude1, double longitude2,double latitude2){
		//自己实现距离算法：
		/**
		 * 计算两点之间距离
		 * @param start
		 * @param end
		 * @return String  多少m ,  多少km
		 */
	  
		double lon1 = (Math.PI/180)*longitude1;
	    double lat1 = (Math.PI/180)*latitude1;
	   
	    double lon2 = (Math.PI/180)*longitude2;
	    double lat2 = (Math.PI/180)*latitude2;
	   
	   
	    //double Lat1r = (Math.PI/180)*(gp1.getLatitudeE6()/1E6);
	    //double Lat2r = (Math.PI/180)*(gp2.getLatitudeE6()/1E6);
	    //double Lon1r = (Math.PI/180)*(gp1.getLongitudeE6()/1E6);
	    //double Lon2r = (Math.PI/180)*(gp2.getLongitudeE6()/1E6);
	   
	    //地球半径
	    double R = 6371.004;
	   
	    //两点间距离 m，如果想要米的话，结果*1000就可以了
	    double dis =  Math.acos(Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos(lon2-lon1))*R;
	    NumberFormat nFormat = NumberFormat.getNumberInstance();  //数字格式化对象
	    if(dis < 1){               //当小于1千米的时候用,用米做单位保留一位小数
	    	nFormat.setMaximumFractionDigits(1);    //已可以设置为0，这样跟百度地图APP中计算的一样 
	    	dis *= 1000;
	    	if(dis < 100){
	    		return "小于100m";
	    	}else{
	    		return nFormat.format(dis)+"m";
	    	}
	   }else{
		   nFormat.setMaximumFractionDigits(2);
		   return nFormat.format(dis)+"km";
	   }
	}
	
	/**
	 * @MethodName:main
	 * @Author JuoChiu
	 * @Date 2017年10月31日 下午3:01:00
	 * @Description:main方法测试
	 * @param args
	 * @ReturnType void
	 */
	public static void main(String[] args) {
		String str =  getLatLngDistance(106.539259,29.636674,106.539259,29.636674);
		System.out.println("---str---"+str);
	}
}
